/*
 * Copyright (C) 2013 Félix Marín Ramírez | felixmurcia@gmail.com
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */

/*
 * DOCUMENTACION: http://documentacion-emple-depart.tk
 */
package adgui.modelo;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

/**
 *
 * @author Félix Marín Ramírez | felixmurcia@gmail.com
 * @version 1.0
 */
public abstract class Conexion {

    /**
     * Variable a través de la cual se realizará la conexión a la base de datos.
     */
    protected Connection con;    
    /**
     * Variable que almacena las consultas.
     */
    protected String consulta;
    /**
     * Variable de tipo Statement con la que se creará la declaración.
     */
    protected Statement st;
    /**
     * Varuable de tipo ResultSet que almacenará los resultados de las
     * consultas.
     */
    protected ResultSet rs;
    /**
     * Variable de tipo boolean utilizada en el método existeDir de la clase
     * AbstractModel.
     */
    protected boolean bol;

    /**
     *
     * @return Devuelve el contenido de la variable de tipo String consulta.
     */
    public String getConsulta() {
        return consulta;
    }

    /**
     *
     * @param consulta Establece el contenido de la variable consulta.
     */
    public void setConsulta(String consulta) {
        this.consulta = consulta;
    }

    /**
     *
     * @return Devuelve una instancia de la conexión a la base de datos.
     */
    protected Connection getConexion() {
        return this.con;
    }

    /**
     * Método encargado de cerrar la conexión a la base de datos.
     *
     * @throws SQLException Si se produce un error en la conexión lanzará una
     * excepción.
     */
    protected void cerrarConexion() throws SQLException {
        if (this.con != null) {
            this.con.close();
            this.con = null;
        }
    }

    /**
     * Método encargado de cerrar los elementos necesarios en la consulta.
     *
     * @throws SQLException Si se produce un error en la conexión lanzará una
     * excepción.
     */
    protected void cerrarStatements() throws SQLException {
        if (this.st != null) {
            this.st.close();
            this.st = null;
        }
        if (this.rs != null) {
            this.rs = null;
        }
        if (this.consulta != null) {
            this.consulta = null;
        }
    }
}
